package org.origin.centre.support.utils;

import org.origin.centre.support.json.JsonMapper;

import java.util.List;

/**
 * json 工具
 *
 * @author ferret
 * @version 2024-05-08
 */
@SuppressWarnings("unused")
public final class JsonUtil {
    private static final JsonMapper jsonMapper = JsonMapper.getInstance();

    /**
     * 对象转换为JSON字符串
     */
    public static String toJsonString(Object object) {
        return jsonMapper.toJson(object);
    }

    /**
     * 为JSON字符串转换对象
     */
    public static <T> T parseObject(String json, Class<T> clazz) {
        return jsonMapper.parseObject(json, clazz);
    }

    /**
     * 为JSON字符串转换对象集合
     */
    public static <T> List<T> parseArray(String json, Class<T> clazz) {
        return jsonMapper.parseArray(json, clazz);
    }

    /**
     * 将对象转换为指定类型的实例。
     *
     * @param object 需要转换的对象。
     * @param clazz  目标类型，转换后的对象类型。
     * @return 转换后的对象实例，类型为clazz参数指定的类型。
     */
    public static <T> T convert(Object object, Class<T> clazz) {
        // 将对象转换为JSON字符串，然后将该字符串解析为目标类型
        return JsonUtil.parseObject(JsonUtil.toJsonString(object), clazz);
    }
}
